/* 
 *Esta clase modela los objetivos en el juego
 */

#ifndef OBJETIVO_HPP
#define	OBJETIVO_HPP


#include "Modelo.hpp"
#include "Nave.hpp"

class Objetivo : public Modelo {
public:

    /**
     * 
     * @param i : El identificador del objetivo(para el picking).
     * @param objs : Apuntador a los demas objetivos.
     * @param n : Apuntador a la nave.
     * @param nombre : Nombre del modelo a utilizar.
     * @param w : Ancho de la pantalla.
     * @param h : Alto de la pantalla.
     */
    Objetivo(int id, Objetivo** objs, Nave * n, char * nombre, int w, int h);



    /**
     * metodo que permite verificar las colisiones del objetivo*
     * con los lasers y con la nave
     *
     * @param skip : El frameskip actual.
     */
    void idle(int s); //funcioón de idle que realiza calculos para el modelo

    
    
    /**
     * Metodo que permite dibujar un objetivo en la escena, en su estado normal 
     * o destruido.
     */
    virtual void dibujar();
    

    /**
     * Este metodo que permite mover el objetivo una cantidad de unidades 
     * hacia el frente.
     * 
     * @param units : La cantidad de unidades a mover
     */
    void empujar(int units);

    int id; //un identificador para cada objetivo
    bool selection_mode;





private:
    /**
     * Este metodo permite colocar el objetivo en una posicion psudoaleatoria
     * en el plano XY.
     */
    void randomPos();
    float distancia(float x, float y, float z); //calcular distancias entre puntos

    bool destroyed; //indica si la nave se encuentra destruda o no

    GLfloat maxX; //topes maximos de la pantalla
    GLfloat maxY;

    Nave* nave; //apuntador a la nave del juego
    Objetivo** objetivos; //lista de los demas objetivos
    GLenum luz_explosion; //la luz a usar en la explosion
    int explosion_counter; //el contador de frames que lleva la explosion
    Laser * afectado; // una variable auxiliar que guarda el laser que impacto contra
    // el objetivo
    bool recovered; // indica si se realizo la recuperacion de los parametros de
    // de luces
};

#endif	/* OBJETIVO_HPP */

